home *** CD-ROM | disk | FTP | other *** search
- (*************************************************************************
-
- $RCSfile: Modules.mod $
- Description: Clone of the Project Oberon Modules module. Based on the
- interface created by Niklaus Wirth (NW 16.2.86 / 22.9.92).
-
- Created by: fjc (Frank Copeland)
- $Revision: 1.1 $
- $Author: fjc $
- $Date: 1995/02/21 13:49:54 $
-
- Copyright © 1995, Frank Copeland.
- This file is part of the Oberon-A Library.
- See Oberon-A.doc for conditions of use and distribution.
-
- *************************************************************************)
-
- MODULE Modules;
-
- IMPORT SYSTEM, Kernel;
-
- CONST
- ModNameLen* = 32;
-
- TYPE
- Module* = POINTER TO ModDesc;
- Command* = PROCEDURE;
- ModuleName* = ARRAY ModNameLen OF CHAR;
-
- ModDesc* = RECORD
- next*: Module;
- name*: ModuleName;
- module : Kernel.Module;
- END;
-
- VAR
- res* : INTEGER;
- ModList : Module;
-
- PROCEDURE ThisMod* (name: ARRAY OF CHAR): Module;
-
- VAR mod : Kernel.Module; newMod : Module;
-
- BEGIN
- res := 1; newMod := ModList;
- WHILE (newMod # NIL) & (newMod.name # name) DO
- newMod := newMod.next
- END;
- IF newMod = NIL THEN
- mod := Kernel.FindModule (name);
- IF mod # NIL THEN
- NEW (newMod);
- COPY (name, newMod.name); newMod.module := mod;
- newMod.next := ModList; ModList := newMod;
- res := 0
- END
- ELSE
- res := 0
- END;
- RETURN newMod
- END ThisMod;
-
- PROCEDURE ThisCommand*(mod: Module; name: ARRAY OF CHAR): Command;
-
- VAR cmd : Kernel.Command;
-
- BEGIN
- cmd := Kernel.FindCommand (mod.module, name);
- IF cmd # NIL THEN res := 0; RETURN SYSTEM.VAL (Command, cmd.proc)
- ELSE res := 1; RETURN NIL
- END;
- END ThisCommand;
-
- PROCEDURE Free*(name: ARRAY OF CHAR; all: BOOLEAN);
- BEGIN
- res := 0
- END Free;
-
- END Modules.
-